package com.suanfa;


import java.util.Arrays;

/**
 * 冒泡排序
 *
 * @Author weijingchen
 * @Date 2025/5/28 20:52
 * @Version 1.0.0
 */
public class Test10 {
    public static void main(String[] args) {
        //创建一个无序的int数组
        int[] arr1 = {12, 10, 9, 8, 7, 16, 5, 4, 3, 2, 11};
        int[] arr2 = {12, 10, 9, 8, 7, 16, 5, 4, 3, 2, 11};
        int[] arr3 = {12, 10, 9, 8, 7, 16, 5, 4, 3, 2, 11};
        bubbling1(arr1);
        bubbling(arr2);
        bubbleSort(arr3);
    }

    /**
     * 取第一位数字与后面的数字进行比较，如果第一位数字大于后面的数字，就将第一位数字与后面的数字进行互换，继续比较
     * 第二轮，取第二位数字与后面的数字进行比较，同上
     *
     * @param arr
     */
    private static void bubbling1(int[] arr) {
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    count++;
                }
            }
        }
        System.out.println("bubbling1=" + count);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 第一轮：取第二个位置上的数据，与第一个位置上的数据进行比较，如果第二位置上的数据，小于前面位置上的数据就进行数据互换，继续进行比较
     * 第二轮：取第三个位置上的数据，与前面的数据进行比较，如果第三位置上的数据，小于前面位置上的数据就进行数据互换，继续进行比较
     *
     * @param arr
     */
    private static void bubbling(int[] arr) {
        int count = 0;
        for (int i = 1; i < arr.length; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[i] < arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    count++;
                }
            }
        }
        System.out.println("bubbling=" + count);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 比较相邻两个数据的大小，将大的数据往后放，继续进行下一个位置的比较，将大值放到最后
     *
     * @param arr
     */
    public static void bubbleSort(int[] arr) {
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    count++;
                }
            }
        }
        System.out.println("bubbleSort=" + count);
        System.out.println(Arrays.toString(arr));
    }
}
